Repository navigation
fix(context): keep bounded native references readable - #7735
Conversation
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
songoow
left a comment
There was a problem hiding this comment.
Reviewer: model_agent — GPT-6 Astra Pro — OpenAI — self_reported
动机 / Motivation
使用 native context 的执行器在已经完成 should-run 准入后,仍可能因捕获路径较长和重复指引挤满 4 KB 返回预算,拿到 transport_failed 而非可用引用。
基线把完整分页说明重复放进文件引用,实际长路径下已 committed 的原 Turn 返回失败。本 PR 把 path、digest 和有界 reader 统一为小引用,外层保留导航,完整分页和截断恢复说明交给首个有界全文页。
同一长路径/4096 字节负载在 File 与 SQLite 的真实 should-run 上,base 两例失败,head 两例返回预算内引用;随后第一页包含原完整 guidance,选读的 receipt 精确等于原捕获,准入计数仍 1、spend 仍 0。
这是现有传输/读回修复,不增加准入、结算或模型保留证明,不完成完整 C1/#7430 切换,也不证明实际 App 采用、模型理解或长期费用收益;当前未归因 CI 仍阻止批准。
改动思路 / Approach
修复针对已决定事实的传输边界:保留原捕获与身份,引用中只放可定位、校验和读取的元数据,完整读页义务由实际第一页承载。导航、选读和完整读取的职责仍分明,未把展示成功变成新的工作授权。
这是可独立回滚的 bounded native reference 修复;实际 guard、保存投影与 reader 共同覆盖。完整 C1切换、旧reader退役与真实模型成果/完整成本验收不在本次交付声明内。
should-run 仍先完成原 admission并保存完整决策,再构造引用。外层导航告诉读者选取需要的事实;直接按 path/hash 读第一有界全文页时,reader 自动带上完整分页与截断恢复说明。选读回到原 receipt,读取结束不会制造新 guard、Host调用或扣额。
saved projection 已经使用 path/sha256/预算内 command 这组边界。抽成同一个 _capture_read_reference 后,guard 与 context-project 复用它;完整指引继续使用原常量,避免另写简化版义务、另建 reader 或让两个路径维护不同预算规则。
具体改动 / Changes
关键代码讲解
- _capture_page:把完整分页义务交付给实际读者。首个有输出预算的全文页返回原 CONTEXT_CAPTURE_PAGE_GUIDANCE;selected 页继续用选读说明,历史显式无界响应保留原形状。
- _capture_read_reference:统一文件身份与预算 reader。只构造原 path、sha256 和同预算 command,复用原命令 owner;导航或完整指引不在每个嵌套引用中重复。
- native_context_capture_view:在原 capture 已持久化之后投影小引用。主引用与 recovery 复用同一 helper,外层导航保持;预算不足仍走原 transport failure,不伪造成功或重新准入。
- project_saved_context_capture:让保存的投影与 guard 共用已有规则。移除局部重复 helper,成功与失败恢复仍指向原完整文件,并保留调用者预算和原捕获身份。
规范基准:docs/reference/required-work-context.md;修订 a2c8c94。独立基准是改动前 Native quota should-run/context-project 的持久化、7900或显式更小上限、完整页与原始恢复合同。以下标签按原段落定位,不把完整 C1 后续验收强加给这个有真实消费者的修复。
| Criterion | 当前结论 | 对应实现或剩余边界 |
|---|---|---|
| small file reference | implemented | _capture_read_reference reused by native_context_capture_view and project_saved_context_capture |
| reader pages remain independently bounded | implemented | _capture_page adds original CONTEXT_CAPTURE_PAGE_GUIDANCE on first bounded full page |
| original Turn/capture/effect identities | implemented | Existing digest-bound read_context_capture and original decision_capture owner |
实际验证 / Validation
本轮 root reviewer 在 exact head 执行 selection_replan_reentry、context_capture_read、context_capture_selection、progressive_native_context 四个模块,共79例通过(125.07秒)。我又独立核对测试、源代码与原日志,补跑 changed-file Ruff 和 git diff --check,均通过。作者319例、安装wheel及总传输字节统计没有冒充本轮执行。
root_7735_probe.py 用同一候选回归在不可变 a2c8c94 与 af1808 上跑真实 public should-run,保留90字符路径分量与4096字节预算。base File/SQLite 两例都在已 committed 后返回 quota_decision_transport_failed;head 两例均通过。生成的恢复命令经原 parser/reader实际读回:首个全文页等于原完整 guidance 且预算内;选读 heartbeat receipt 与原 capture精确相等,随后准入计数仍1、spend仍0。该修复的基线失败是预期修复对象,没有被规范化掉。
对主干的风险 / Risks
核心风险是为了变小而丢读页/截断恢复义务,或让恢复者重新准入。这里复用原完整常量,真实读回也核对原 receipt 和无重复 effects;历史无界路径与 selected scope 分支明确保留。没有发现阻断性代码缺陷。修复不是对任意超长路径/极小预算都成功的保证:原 metadata 无法容纳时仍须明确拒绝并保留原 capture。
语义与 CI 对齐
本次不宣称所有共享 reader 行为都只在 native on 时变化:直接的首个有界全文页也有意增加完整指导;它不激活 native capability或执行权限。原 native activation gate、无界wire及原始数据未改变,文档明确了这项呈现变化。
当前 exact-head dashboard-browser(2) 在 goal-workspace-m2.mjs:206 的既有1秒 loaded-lens预算失败,日志样本含1376.597014ms,aggregate checks红。已定位失败,但没有同命令不可变base/head的同签名归因。按照当前 verdict_policy,这是阻止批准的 required 验证缺口;不把它凭源码路径不同归为历史噪声。最小解除动作是补对应基线/候选归因或独立环境证据与当前资格;只有确认代码回归后才要求修代码,不能放宽预算掩盖失败。
我的整体评价 / Verdict
REQUEST_CHANGES:局部修复有直接证据,未发现阻断性的代码缺陷;当前 browser 失败缺少要求的归因,暂不具备批准资格。 审查绑定 exact head af1808a。
原 Turn、捕获和 effect 身份不变,恢复读取不再以重新准入补偿传输失败。这条真实恢复路径更可用,有利于长流程接续;完整 C1、真实模型保留与长期成果仍未被这一传输证据证明。
原 4 KB 上限内能获得可执行读回路径,读者在真正分页时仍收到完整说明,不需手工猜测恢复命令或额外询问 owner。首个有界页现在明确包含 guidance,这是有意的可观察变化。 变更为 CLI 原生引用、分页 JSON 和中英文说明;没有浏览器布局或视觉交互。
统一已有 reference helper 是有界且有真实消费者的复用;不需要新 capture 服务或另一个语义摘要。完整指引移动到第一页而未另写缩短版本,保留真正需要的恢复义务。
本轮证据是源码环境、合成原生会话与真实 File/SQLite CLI/reader;未独立复跑作者 wheel、319-case或模型实验声明。未证明真实 App 保留/采用,也未解决当前 browser 失败的要求归因,故不具备批准资格。
English verdict: REQUEST_CHANGES — exact head af1808a; The bounded-reference fix is supported by actual base/head admission and original-reader evidence, with no blocking code defect found. Approval is withheld because the current browser failure lacks required attribution.
…reference-budget-20261030 Signed-off-by: huangruiteng <huangrt01@163.com>
|
The failing This is base/head parity evidence for an environment-sensitive performance gate, not a context-reference correctness regression. No browser threshold is relaxed in this PR; the failed job will be rerun after the pending long shards make the workflow terminal. |
songoow
left a comment
There was a problem hiding this comment.
Reviewer: model_agent; GPT-6; OpenAI; self_reported.
动机 / Motivation
受影响的是在较小工具输出预算下接收原生上下文引用的Agent。准入已经完成后,重复的分页说明与较长路径可能撑破4KB返回;本项压缩重复元数据并把完整分页说明交给第一页。已验证File/SQLite真实准入返回仍在原4096字节预算内,恢复读取同一receipt且没有重复准入或扣额。本项不证明模型保留了完整上下文,不修改准入规则,也不提高输出预算。
这次判断绑定PR #7735的完整head 5597a13。评价对象是已经存在的实际调用任务与局部可观察结果;重复调用带来的成本或错误恢复路线是本项动机,不能把较小响应或更少导入直接等同于长期任务质量。
改动思路 / Approach
提取既有_capture_read_reference,保存path、digest、budgeted command;导航留在外层,完整分页义务随首个有界全文页交付。本 PR 的合理边界是已准入结果的可读传输和同一capture恢复;原捕获、身份、账务和历史无界wire均保留。
沿入口跟踪到原所有者、返回值和失败恢复后,这个实现仍在现有边界上处理问题。无改动会保留原成本或错误指引;另起一套业务规则、持久化状态或通用缓存会增加同步义务,此处没有这类必要性。新增说明和投影应服务原调用方完成任务,不能改变原来的准入、权限、结算或来源完整性要求。
具体改动 / Changes
关键代码讲解
- _capture_read_reference:统一当前引用和recovery引用的路径、摘要与预算,移除嵌套重复说明。 输入与拒绝分支沿用现有调用路径;这一处的返回内容或依赖时机改变,不把局部投影提升为新的业务判定。
- _capture_page:仅在首个有界全文页补充完整分页指导,选读保持原范围说明,无界历史响应不变。 输入与拒绝分支沿用现有调用路径;这一处的返回内容或依赖时机改变,不把局部投影提升为新的业务判定。
- native_context_capture_view:仍先保存后返回小引用,在无法容纳元数据时保留已决定receipt而不重新准入。 输入与拒绝分支沿用现有调用路径;这一处的返回内容或依赖时机改变,不把局部投影提升为新的业务判定。
有意将完整分页说明从重复嵌套引用移到首个有界全文页;原义务文本复用,历史无界输出保持。不能把引用缩短等同模型效果或完整成本改善。正向场景是:真实should-run后读原capture和heartbeat receipt,返回字节不超4KB且只记录一次准入。负向场景是:分页或选择读取只证明当前范围;错误摘要被拒绝,恢复命令不能产生第二次准入。这些是依据实际源码与已有调用测试核对的行为边界;失败和恢复继续由原owner负责,没有以返回字段存在代替真实状态读取。
规范基准: docs/reference/required-work-context.md ;不可变修订 04c5799。以下标签定位原文段落/原句,不是新造的协议编号。
- Selected capture details:有意将完整分页说明从重复嵌套引用移到首个有界全文页;原义务文本复用,历史无界输出保持。不能把引用缩短等同模型效果或完整成本改善。 对应上述原所有者和当前聚焦回归。
实际验证 / Validation
selection/replan reentry全部19项测试 PASS,含File/SQLite真实入口;Python编译与 diff hygiene PASS。
执行命令:python -m pytest -q tests/control_plane/test_selection_replan_reentry.py。本轮统计只包含上述实际执行;作者PR内微基准、旧head完整回归和旧review的历史量测都已阅读,但不冒称本轮重新执行的结果。
对主干的风险 / Risks
有意将完整分页说明从重复嵌套引用移到首个有界全文页;原义务文本复用,历史无界输出保持。不能把引用缩短等同模型效果或完整成本改善。最需要防止的情况是:分页或选择读取只证明当前范围;错误摘要被拒绝,恢复命令不能产生第二次准入。已核对相关调用方和已有review,未重复发布旧head意见;本轮对新增head的源代码与局部回归单独作判断。原持久化状态和业务所有者保持,仍然不能由小范围通过推断整仓或所有部署入口已经合格。
当前精确head失败证据:test-shard (1)、test-shard (2)、test-shard (6)、dashboard-browser (2)。作者已补固定base/head同签名浏览器预算失败;本轮当前test-shard错误/取消日志仍不可读,验证资格保留这个具体缺口。 未取得的分片日志明确留作未知;同名错误或改动文件不相交都不足以建立pre_existing归因。
最小补齐是针对当前实际失败取得日志,并提供不可变base/head同命令同条件归因,或能独立覆盖该失败不变量的当前真实入口证据。已完成的聚焦回归不应无条件重做,也不要求无关功能重写;如果归因确认是回归,再修相应最小代码路径。未完成的检查不是单凭pending就要求改代码的理由。
我的整体评价 / Verdict
REQUEST_CHANGES:当前阻断是具体的验证证据缺口。聚焦审查尚未发现可复现的阻断性生产代码缺陷,不能把未归因红灯写成代码finding。 审查仅适用于exact head 5597a13。
本 PR 的合理边界是已准入结果的可读传输和同一capture恢复;原捕获、身份、账务和历史无界wire均保留。 已验证File/SQLite真实准入返回仍在原4096字节预算内,恢复读取同一receipt且没有重复准入或扣额。 已检查 loopx/cli_commands/quota_capture.py:_capture_read_reference;loopx/cli_commands/quota_capture.py:_capture_page;loopx/cli_commands/quota_capture.py:native_context_capture_view;变更是CLI/内部读取或文本协议,没有修改浏览器页面布局,视觉截图不适用。
作者已补固定base/head同签名浏览器预算失败;本轮当前test-shard错误/取消日志仍不可读,验证资格保留这个具体缺口。 本项不证明模型保留了完整上下文,不修改准入规则,也不提高输出预算。所有本轮探针使用合成fixture,没有运行真实模型任务或发起业务作业;本review陈述审查与验证事实,不声称已经发布部署或完成合并。
English verdict: REQUEST_CHANGES — exact head 5597a13. Focused code review and the listed local regressions found no confirmed blocking implementation defect. Approval is held for the named current validation gaps; resolve their source-bound evidence rather than changing unrelated code.
原生
quota should-run已经完成准入后,较长的捕获路径会与重复的分页说明一起撑破调用方的 4 KB 输出上限,最终返回quota_decision_transport_failed。本 PR 使该路径仍能返回可读的原始捕获引用。复用 saved projection 已有的引用构造逻辑,统一 guard 与
context-project的 path、digest 和有界读取命令。导航保留在外层;完整分页与截断恢复说明使用同一常量,随首个有界全文页返回。历史无界响应保持兼容,原始捕获、准入和结算身份不变。同步了中英文使用说明。验证版本:
af1808afb6fc7073f534c4875840cef9a0b2e0ad,不可变基线a2c8c940c36e046beaef728750f2451bc46458d0。同一 33,657 字节合成捕获、7,900 字节输出上限下,引用由 4,978 降至 3,857 字节;完整投递计入首次分页说明后由 41,488 降至 41,330 字节,读取仍为 5 次。4 KB 路径由拒绝恢复为可用,该更小预算需要 10 次读取。此证据仅说明传输修复,不证明模型决策、实际 App 采用或长期成果收益。
这是可独立回滚的现有传输路径修复,可先于 #7430 合并;没有引入新的决策 owner、状态或协议选项。C1 的完整契约切换、旧 reader 退出和原 quota 单会话成果/完整成本验收仍保留在原任务。精确版本 change-quality 记录为 pass;合并留给维护者。